package com.itheima.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/*
 * 编译后变成,本质是个接口
 * public interface MyTest1 extends Annotation {
 *   public abstract String aaa()
 * }
 * */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest1 {
    String value();
    String aaa() default "aaa";
}

/*
* 元注解：修饰注解的注解
* @Target({ ElementType.TYPE })
* TYPE  类、接口
* FIELD  成员变量
* METHOD  成员方法
* PARAMETER  方法参数
* CONSTRUCTOR  构造器
* LOCAL_VARIABLE  局部变量
* */

/*
* @Retention(RetentionPolicy.)  用于声明注解保留周期
* SOURCE  只作用于源码阶段，字节码文件不存在
* CLASS  默认，保留字节码文件阶段，运行阶段不存在
* RUNTIME 常用，一直保留到运行阶段 
* */